<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * Class Login
 * 后台登录控制器
 * @author wuliang
 */
class Login extends CI_Controller {
    public function __construct () {
        parent::__construct();
    }

    public function index () {
        $this->load->view('admin/login.php');
    }

    /**
     * 后台登录
     */
    public function login_in () {
        // 开启session
        if (!isset($_SESSION)) {
            session_start();
        }
        // 用户名和密码必填验证
        // 加载表单辅助函数
        $this->load->helper('form');
        // 加载表单验证类
        $this->load->library('form_validation');
        // 设置验证规则
        $this->form_validation->set_rules('username','Username','required');
        $this->form_validation->set_rules('password','Password','required');

        // 执行验证规则
        $status = $this->form_validation->run();
        if ($status) {
            // 加载后台人员操作模型
            $this->load->model('admin_model','admin');

            // 提取表单数据
            $username = $this->input->post('username');
            $password = $this->input->post('password');
            $code     = $this->input->post('captcha');

            // 判断验证码是否填写正确
            if (strtoupper($code) != $_SESSION['code']) {
                error('验证码错误');
            }

            // 根据输入的用户名获取用户信息，验证用户名和密码是否正确
            $userInfo = $this->admin->check($username);
            if (!$userInfo || $userInfo['passwd'] != md5($password)) {
                error('用户名或密码错误');
            }

            // 通过验证，将用户信息写入session
            $sessionData = array(
                'userId'    => $userInfo['uid'],
                'username'  => $userInfo['username'],
                'logintime' => time()
            );
            $this->session->set_userdata($sessionData);

            // 跳转到后台首页
            success('admin/admin/index','登陆成功');
        } else {
            error('用户名或密码不能为空');
        }
    }

    /**
     * 后台用户退出
     */
    public function login_out () {
        // 销毁session 下边方法同 session_destroy()
        $this->session->sess_destroy();
        // 跳转到登录页面
        success('admin/login/index','退出成功');
    }

    /**
     * 生成验证码
     */
    public function code () {
        // 验证码配置项
        $config = array(
            'width'    => 80,
            'height'   => 25,
            'codeLen'  => 4,
            'fontSize' => 16
        );

        // 加载验证码类
        $this->load->library('code', $config);

        // 显示验证码
        $this->code->show();
    }
}